package world.snowcrystal.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailUtils {

    /**
     * 该正则表达式来源于 <a href="https://www.rfc-editor.org/rfc/rfc5322">RFC 5332 Internet Message Format</a>
     * @since 1.0
     */
    public static String regx ="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";

    public static Pattern pattern;
    static {
        pattern = Pattern.compile(regx);
    }

    /**
     * 检查传入的邮箱地址是否合法
     * @return true 是一个合法的邮箱地址
     * @see #regx
     */
    public static boolean validThisEmail(String email) {
            Matcher matcher = pattern.matcher(email);
            return matcher.matches();
    }

}
